Data loading

suppressPackageStartupMessages({
  library(SummarizedExperiment)
  library(SEtools)
  library(edgeR)
  library(DT)
  library(pheatmap)
  library(plotly)
  library(dplyr)
  library(sva)
  library(reshape2)
  library(overlapper)
})
source("Functions/EDC_Functions.R")
source("Functions/CriFormatted.R")
load("Data/TotalSumExp.RData")
load("Data/geneLengths.RData")
load("Data/AllSEcorrected.RData",verbose=T)
## Loading objects:
##   SEs
##   DEAs
load("Data/brainspan.cortex.byAge.RData", verbose = T)
## Loading objects:
##   byAge
load("Data/iPSC.RData", verbose = T)
## Loading objects:
##   e

Brainspan correlation

Organoids <- assays(SEs$chronic.org[,which(SEs$chronic.org$EXPO=="CNT")])$counts
Fetal2D <- assays(SEs$chronic.fetal[,which(SEs$chronic.fetal$EXPO=="CNT")])$counts
iPSC <- e[,grep("3391B",colnames(e))]
Fetal <- byAge
i <- intersect(rownames(Organoids),intersect(rownames(iPSC),rownames(Fetal2D)))
tot <- cbind(Organoids[i,],iPSC[i,],Fetal2D[i,])

tot <- filterGenes(tot)
en <- donorm(tot)
#put the rows in the same order
i <- intersect(row.names(Fetal),row.names(en))
en <- en[i,]
Fetal <- Fetal[i,]
#create the matrix of pearson correlation coefficients and plot
m <- matrix(0,nrow=ncol(Fetal),ncol=ncol(en))
for(i in 1:ncol(en)){ m[,i] <- apply(Fetal,2,FUN=function(x){ cor(log(en[,i]+1),log(x+1)) }) }
row.names(m) <- colnames(Fetal)
colnames(m) <- colnames(en)
m2 <- m[grep("pcw",row.names(m)),]
byheatmap(m2,cluster_row=F)

DEGs heatmaps

org.chronic <- row.names(DEAs$chronic.org)[which((abs(DEAs$chronic.org$logFC.EXPO1X)>0.5 | abs(DEAs$chronic.org$logFC.EXPO1000X)>0.5) & DEAs$chronic.org$FDR<=0.05 & DEAs$chronic.org$logCPM > 0)]

save(org.chronic,file = "Data/DEGsOrganoidsChronic.RData")

MixN_org_chronic <- SEs$chronic.org[,which(SEs$chronic.org$EXPO=="CNT"|SEs$chronic.org$EXPO=="1X" | SEs$chronic.org$EXPO=="1000X")]

sehm(MixN_org_chronic, assayName = "corrected", org.chronic,  do.scale = T, show_rownames = F, anno_columns = c("Line","EXPO2"), main="Chronic org DEGs")

Most significant and highly disregulated DEGs heatmaps

org.chronic2 <- row.names(DEAs$chronic.org)[which((abs(DEAs$chronic.org$logFC.EXPO1X)>1 | abs(DEAs$chronic.org$logFC.EXPO1000X)>1) & DEAs$chronic.org$FDR<=0.001 & DEAs$chronic.org$logCPM>0)]

MixN_org_chronic <- SEs$chronic.org[,which(SEs$chronic.org$EXPO=="CNT"|SEs$chronic.org$EXPO=="1X" | SEs$chronic.org$EXPO=="1000X")]
sehm(MixN_org_chronic, assayName = "corrected", org.chronic2,  do.scale = T, show_rownames = T, anno_columns = c("Line","EXPO2"), main="Chronic org DEGs")

1X vs 1000X

FDRTh <- 0.05
LogFCTh <- 0.5

MixN1X <- DEAs$chronic.org
MixN1X$genes <- row.names(MixN1X)
MixN1X$logFC <- (MixN1X$logFC.EXPO1X)

MixN1000X <- DEAs$chronic.org
MixN1000X$genes <- row.names(MixN1000X)
MixN1000X$logFC <- (MixN1X$logFC.EXPO1000X)

Comp <- compareResultsFC(MixN1X, MixN1000X, FDRth=0.05, FCth=2^0.5, FDRceil=1e-10, logCPMth = 0, FCceil=8, title='Comparing MixN 1X to 1000X', geneLabel=TRUE)
## Warning in cor.test.default(AllRes$logFC_A, AllRes$logFC_B, method = corMethod):
## Cannot compute exact p-value with ties

Comp$Scatter

Neurodevelopmental Disorder (NDD) Genes

load("Data/ASD.RData", verbose = T)
## Loading objects:
##   ASD
##   SFARI
##   SFARIgenes
##   AutismKB
##   DecipherNeuro
##   MSSNG
##   ASDsevere
##   ID
##   NeuroOmim
##   iPSYCH
##   GDI
org.chronic3 <- row.names(DEAs$chronic.org)[which(DEAs$chronic.org$FDR<=0.05)]

MixN <- list(OrganoidsDEGsLong=org.chronic3, OrganoidsDEGs=org.chronic)


m <- overlapper::multintersect(ll = MixN, ll2 = ASD, universe = row.names(DEAs$chronic.org))
dotplot.multintersect(m,sizeRange = c(0,15))


m<-overlapper::multintersect(ll = MixN, ll2 = SFARIgenes, universe = row.names(DEAs$chronic.org))
dotplot.multintersect(m)

Gene expression dysregulation of the most important NDD genes

geneStripPairEDCMix(SE = MixN_org_chronic,GeneSet = intersect(org.chronic,SFARIgenes$score1), printExp = FALSE,SampleColors = "Default")
## Warning: `fun.y` is deprecated. Use `fun` instead.
## Warning: `fun.ymin` is deprecated. Use `fun.min` instead.
## Warning: `fun.ymax` is deprecated. Use `fun.max` instead.


geneStripPairEDCMix(SE = MixN_org_chronic,GeneSet = intersect(org.chronic, union(SFARIgenes$score1,SFARIgenes$score2)), printExp = FALSE,SampleColors = "Default")
## Warning: `fun.y` is deprecated. Use `fun` instead.
## Warning: `fun.ymin` is deprecated. Use `fun.min` instead.
## Warning: `fun.ymax` is deprecated. Use `fun.max` instead.


geneStripPairEDCMix(SE = MixN_org_chronic,GeneSet = intersect(org.chronic, union(union(SFARIgenes$score1,SFARIgenes$score2),SFARIgenes$score3)), printExp = FALSE,SampleColors = "Default")
## Warning: `fun.y` is deprecated. Use `fun` instead.
## Warning: `fun.ymin` is deprecated. Use `fun.min` instead.
## Warning: `fun.ymax` is deprecated. Use `fun.max` instead.

Gene expression dysregulation of the acute fetal DEGs

load("Data/DEGsFetalAcute.RData", verbose = T)
## Loading objects:
##   fet.acute
geneStripPairEDCMix(SE = MixN_org_chronic,GeneSet = intersect(org.chronic, fet.acute), printExp = FALSE,SampleColors = "Default")
## Warning: `fun.y` is deprecated. Use `fun` instead.
## Warning: `fun.ymin` is deprecated. Use `fun.min` instead.
## Warning: `fun.ymax` is deprecated. Use `fun.max` instead.

Gene expression dysregulation of the chronic fetal NDD-DEGs in the organoids

load("Data/DEGsFetalChronic.RData", verbose = T)
## Loading objects:
##   fetal.chronic
geneStripPairEDCMix(SE = MixN_org_chronic,GeneSet = intersect(fetal.chronic, unlist(SFARIgenes)), printExp = FALSE,SampleColors = "Default")
## [1] "Expression values are not available for the following genes: CD38"
## Warning: `fun.y` is deprecated. Use `fun` instead.
## Warning: `fun.ymin` is deprecated. Use `fun.min` instead.
## Warning: `fun.ymax` is deprecated. Use `fun.max` instead.

Comparison across systems

load("Data/DEGsFetalChronic.RData", verbose = T)
## Loading objects:
##   fetal.chronic
load("Data/DEGsOrganoidsChronic.RData", verbose = T)
## Loading objects:
##   org.chronic

MixN <- list(OrganoidsDEGs=org.chronic, FetalAcuteDEGs=fet.acute, FetalChronicDEGs=fetal.chronic)

m<-multintersect(ll = MixN, universe = row.names(filterGenes(Total)))
dotplot.multintersect(m)
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 1 rows containing missing values (geom_text).

m<-multintersect(ll = MixN, ll2 = ASD,  universe = row.names(filterGenes(Total)))
dotplot.multintersect(m)

m<-multintersect(ll = MixN, ll2 = SFARIgenes,  universe = row.names(filterGenes(Total)))
dotplot.multintersect(m)

Data praparation

For details on data filtering, normalization, batch correction and differential expression analysis, see here

For details on the preparation of Neurodevelopmental disorder genes, see here


Authors

Nicolò Caporale: ,

Cristina Cheroni:

Pierre-Luc Germain:

Giuseppe Testa:

Lab: http://www.testalab.eu/

‘Date: February 18, 2021’

sessionInfo()
## R version 4.0.3 (2020-10-10)
## Platform: x86_64-apple-darwin17.0 (64-bit)
## Running under: macOS Catalina 10.15.7
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] parallel  stats4    stats     graphics  grDevices utils     datasets 
## [8] methods   base     
## 
## other attached packages:
##  [1] overlapper_0.99.1           reshape2_1.4.4             
##  [3] sva_3.38.0                  BiocParallel_1.24.1        
##  [5] genefilter_1.72.1           mgcv_1.8-34                
##  [7] nlme_3.1-152                dplyr_1.0.4                
##  [9] plotly_4.9.3                ggplot2_3.3.3              
## [11] pheatmap_1.0.12             DT_0.17                    
## [13] edgeR_3.32.1                limma_3.46.0               
## [15] SEtools_1.4.0               SummarizedExperiment_1.20.0
## [17] Biobase_2.50.0              GenomicRanges_1.42.0       
## [19] GenomeInfoDb_1.26.2         IRanges_2.24.1             
## [21] S4Vectors_0.28.1            BiocGenerics_0.36.0        
## [23] MatrixGenerics_1.2.1        matrixStats_0.58.0         
## 
## loaded via a namespace (and not attached):
##   [1] circlize_0.4.12        plyr_1.8.6             lazyeval_0.2.2        
##   [4] shinydashboard_0.7.1   splines_4.0.3          digest_0.6.27         
##   [7] foreach_1.5.1          htmltools_0.5.1.1      magrittr_2.0.1        
##  [10] memoise_2.0.0          cluster_2.1.1          openxlsx_4.2.3        
##  [13] ComplexHeatmap_2.6.2   annotate_1.68.0        colorspace_2.0-0      
##  [16] blob_1.2.1             xfun_0.21              crayon_1.4.1          
##  [19] RCurl_1.98-1.2         jsonlite_1.7.2         survival_3.2-7        
##  [22] iterators_1.0.13       glue_1.4.2             registry_0.5-1        
##  [25] gtable_0.3.0           zlibbioc_1.36.0        XVector_0.30.0        
##  [28] UpSetR_1.4.0           GetoptLong_1.0.5       DelayedArray_0.16.1   
##  [31] V8_3.4.0               shape_1.4.5            scales_1.1.1          
##  [34] futile.options_1.0.1   DBI_1.1.1              randomcoloR_1.1.0.1   
##  [37] Rcpp_1.0.6             viridisLite_0.3.0      xtable_1.8-4          
##  [40] clue_0.3-58            bit_4.0.4              htmlwidgets_1.5.3     
##  [43] httr_1.4.2             RColorBrewer_1.1-2     ellipsis_0.3.1        
##  [46] pkgconfig_2.0.3        XML_3.99-0.5           farver_2.0.3          
##  [49] locfit_1.5-9.4         tidyselect_1.1.0       labeling_0.4.2        
##  [52] rlang_0.4.10           later_1.1.0.1          AnnotationDbi_1.52.0  
##  [55] munsell_0.5.0          tools_4.0.3            cachem_1.0.4          
##  [58] generics_0.1.0         RSQLite_2.2.3          evaluate_0.14         
##  [61] stringr_1.4.0          fastmap_1.1.0          yaml_2.2.1            
##  [64] knitr_1.31             bit64_4.0.5            shinycssloaders_1.0.0 
##  [67] zip_2.1.1              purrr_0.3.4            mime_0.10             
##  [70] formatR_1.7            compiler_4.0.3         curl_4.3              
##  [73] png_0.1-7              tibble_3.0.6           stringi_1.5.3         
##  [76] highr_0.8              futile.logger_1.4.3    lattice_0.20-41       
##  [79] Matrix_1.3-2           ggsci_2.9              vctrs_0.3.6           
##  [82] pillar_1.4.7           lifecycle_1.0.0        GlobalOptions_0.1.2   
##  [85] data.table_1.13.6      cowplot_1.1.1          bitops_1.0-6          
##  [88] seriation_1.2-9        httpuv_1.5.5           R6_2.5.0              
##  [91] promises_1.2.0.1       TSP_1.1-10             gridExtra_2.3         
##  [94] codetools_0.2-18       lambda.r_1.2.4         assertthat_0.2.1      
##  [97] rjson_0.2.20           withr_2.4.1            GenomeInfoDbData_1.2.4
## [100] VennDiagram_1.6.20     grid_4.0.3             tidyr_1.1.2           
## [103] rmarkdown_2.6          Cairo_1.5-12.2         Rtsne_0.15            
## [106] shiny_1.6.0